/**
 * 
 */
package com.module.dnd.engine;

import com.module.dnd.bus.globals.ProfessionConsts;
import com.rpg.base.flyweight.IOPCData;

/**
 * The base OSRIC character class. All base attributes are on a 1-100 scale,
 * with value 0 representing OSRIC value 0 and 100 representing OSRIC value 25.
 * An OSRIC character with a Wisdom score of 13 would have a base Wisdom score
 * of 52.
 * @author Donald
 */
public final class DnDCharacter extends IOPCData {
	/** the character's base Charisma score. */
	private float	baseCharisma;
	/** the character's base Constitution score. */
	private float	baseConstitution;
	/** the character's base Dexterity score. */
	private float	baseDexterity;
	/** the character's base HP score. */
	private float	baseHP;
	/** the character's base Intelligence score. */
	private float	baseIntelligence;
	/** the character's base MaxHP score. */
	private float	baseMaxHP;
	/** the character's base Strength score. */
	private float	baseStrength;
	/** the character's base Wisdom score. */
	private float	baseWisdom;
	/** the full value of the character's ACAdjustment score. */
	private float	fullACAdjustment;
	/** the full value of the character's BendBars score. */
	private float	fullBendBars;
	/** the full value of the character's Charisma score. */
	private float	fullCharisma;
	/** the full value of the character's Constitution score. */
	private float	fullConstitution;
	/** the full value of the character's Dexterity score. */
	private float	fullDexterity;
	/** the full value of the character's DmgBonus score. */
	private float	fullDmgBonus;
	/** the full value of the character's EncumbranceAdjustment score. */
	private float	fullEncumbranceAdjustment;
	/** the full value of the character's ForceDoors score. */
	private float	fullForceDoors;
	/** the full value of the character's HitBonus score. */
	private float	fullHitBonus;
	/** the full value of the character's HP score. */
	private float	fullHP;
	/** the full value of the character's HPBonus score. */
	private float	fullHPBonus;
	/** the full value of the character's Intelligence score. */
	private float	fullIntelligence;
	/** the full value of the character's LoyaltyBonus score. */
	private float	fullLoyaltyBonus;
	/** the full value of the character's MaxAddlLanguages score. */
	private float	fullMaxAddlLanguages;
	/** the full value of the character's MaxHenchmen score. */
	private float	fullMaxHenchmen;
	/** the full value of the character's MaxHP score. */
	private float	fullMaxHP;
	/** the full value of the character's MentalSavingThrowBonus score. */
	private float	fullMentalSavingThrowBonus;
	/** the full value of the character's MissileBonus score. */
	private float	fullMissileBonus;
	/** the full value of the character's ReactionBonus score. */
	private float	fullReactionBonus;
	/** the full value of the character's Strength score. */
	private float	fullStrength;
	/** the full value of the character's SurpriseBonus score. */
	private float	fullSurpriseBonus;
	/** the full value of the character's SurviveRaiseDead score. */
	private float	fullSurviveRaiseDead;
	/** the full value of the character's SurviveRez score. */
	private float	fullSurviveRez;
	/** the full value of the character's SurviveSystemShock score. */
	private float	fullSurviveSystemShock;
	/** the full value of the character's Wisdom score. */
	private float	fullWisdom;
	/**
	 * the value of the modifier applied to the character's base ACAdjustment
	 * score.
	 */
	private float	modACAdjustment;
	/**
	 * the value of the modifier applied to the character's base BendBars score.
	 */
	private float	modBendBars;
	/**
	 * the value of the modifier applied to the character's base Charisma score.
	 */
	private float	modCharisma;
	/**
	 * the value of the modifier applied to the character's base Constitution
	 * score.
	 */
	private float	modConstitution;
	/**
	 * the value of the modifier applied to the character's base Dexterity
	 * score.
	 */
	private float	modDexterity;
	/**
	 * the value of the modifier applied to the character's base DmgBonus score.
	 */
	private float	modDmgBonus;
	/**
	 * the value of the modifier applied to the character's base
	 * EncumbranceAdjustment score.
	 */
	private float	modEncumbranceAdjustment;
	/**
	 * the value of the modifier applied to the character's base ForceDoors
	 * score.
	 */
	private float	modForceDoors;
	/**
	 * the value of the modifier applied to the character's base HitBonus score.
	 */
	private float	modHitBonus;
	/** the value of the modifier applied to the character's base HP score. */
	private float	modHP;
	/** the value of the modifier applied to the character's base HPBonus score. */
	private float	modHPBonus;
	/**
	 * the value of the modifier applied to the character's base Intelligence
	 * score.
	 */
	private float	modIntelligence;
	/**
	 * the value of the modifier applied to the character's base LoyaltyBonus
	 * score.
	 */
	private float	modLoyaltyBonus;
	/**
	 * the value of the modifier applied to the character's base
	 * MaxAddlLanguages score.
	 */
	private float	modMaxAddlLanguages;
	/**
	 * the value of the modifier applied to the character's base MaxHenchmen
	 * score.
	 */
	private float	modMaxHenchmen;
	/** the value of the modifier applied to the character's base MaxHP score. */
	private float	modMaxHP;
	/**
	 * the value of the modifier applied to the character's base
	 * MentalSavingThrowBonus score.
	 */
	private float	modMentalSavingThrowBonus;
	/**
	 * the value of the modifier applied to the character's base MissileBonus
	 * score.
	 */
	private float	modMissileBonus;
	/**
	 * the value of the modifier applied to the character's base ReactionBonus
	 * score.
	 */
	private float	modReactionBonus;
	/**
	 * the value of the modifier applied to the character's base Strength score.
	 */
	private float	modStrength;
	/**
	 * the value of the modifier applied to the character's base SurpriseBonus
	 * score.
	 */
	private float	modSurpriseBonus;
	/**
	 * the value of the modifier applied to the character's base
	 * SurviveRaiseDead score.
	 */
	private float	modSurviveRaiseDead;
	/**
	 * the value of the modifier applied to the character's base SurviveRez
	 * score.
	 */
	private float	modSurviveRez;
	/**
	 * the value of the modifier applied to the character's base
	 * SurviveSystemShock score.
	 */
	private float	modSurviveSystemShock;
	/** the value of the modifier applied to the character's base Wisdom score. */
	private float	modWisdom;
	/** the list of professions the character has. */
	private long	professions;
	/**
	 * Adds an profession flag.
	 * @param flag the flag
	 */
	public final void addProfession(final long flag) {
		professions |= flag;
	}
	/**
	 * Adjusts the score modifier for the ACAdjustment ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModACAdjustment(final float val) {
		modACAdjustment += val;
	}
	/**
	 * Adjusts the score modifier for the BendBars ability by a certain amount.
	 * @param val the modifier applied
	 */
	public void adjModBendBars(final float val) {
		modBendBars += val;
	}
	/**
	 * Adjusts the score modifier for the Charisma ability by a certain amount.
	 * @param val the modifier applied
	 */
	public void adjModCharisma(final float val) {
		modCharisma += val;
	}
	/**
	 * Adjusts the score modifier for the Constitution ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModConstitution(final float val) {
		modConstitution += val;
	}
	/**
	 * Adjusts the score modifier for the Dexterity ability by a certain amount.
	 * @param val the modifier applied
	 */
	public void adjModDexterity(final float val) {
		modDexterity += val;
	}
	/**
	 * Adjusts the score modifier for the DmgBonus ability by a certain amount.
	 * @param val the modifier applied
	 */
	public void adjModDmgBonus(final float val) {
		modDmgBonus += val;
	}
	/**
	 * Adjusts the score modifier for the EncumbranceAdjustment ability by a
	 * certain amount.
	 * @param val the modifier applied
	 */
	public void adjModEncumbranceAdjustment(final float val) {
		modEncumbranceAdjustment += val;
	}
	/**
	 * Adjusts the score modifier for the ForceDoors ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModForceDoors(final float val) {
		modForceDoors += val;
	}
	/**
	 * Adjusts the score modifier for the HitBonus ability by a certain amount.
	 * @param val the modifier applied
	 */
	public void adjModHitBonus(final float val) {
		modHitBonus += val;
	}
	/**
	 * Adjusts the score modifier for the HP ability by a certain amount.
	 * @param val the modifier applied
	 */
	public void adjModHP(final float val) {
		modHP += val;
	}
	/**
	 * Adjusts the score modifier for the HPBonus ability by a certain amount.
	 * @param val the modifier applied
	 */
	public void adjModHPBonus(final float val) {
		modHPBonus += val;
	}
	/**
	 * Adjusts the score modifier for the Intelligence ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModIntelligence(final float val) {
		modIntelligence += val;
	}
	/**
	 * Adjusts the score modifier for the LoyaltyBonus ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModLoyaltyBonus(final float val) {
		modLoyaltyBonus += val;
	}
	/**
	 * Adjusts the score modifier for the MaxAddlLanguages ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModMaxAddlLanguages(final float val) {
		modMaxAddlLanguages += val;
	}
	/**
	 * Adjusts the score modifier for the MaxHenchmen ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModMaxHenchmen(final float val) {
		modMaxHenchmen += val;
	}
	/**
	 * Adjusts the score modifier for the MaxHP ability by a certain amount.
	 * @param val the modifier applied
	 */
	public void adjModMaxHP(final float val) {
		modMaxHP += val;
	}
	/**
	 * Adjusts the score modifier for the MentalSavingThrowBonus ability by a
	 * certain amount.
	 * @param val the modifier applied
	 */
	public void adjModMentalSavingThrowBonus(final float val) {
		modMentalSavingThrowBonus += val;
	}
	/**
	 * Adjusts the score modifier for the MissileBonus ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModMissileBonus(final float val) {
		modMissileBonus += val;
	}
	/**
	 * Adjusts the score modifier for the ReactionBonus ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModReactionBonus(final float val) {
		modReactionBonus += val;
	}
	/**
	 * Adjusts the score modifier for the Strength ability by a certain amount.
	 * @param val the modifier applied
	 */
	public void adjModStrength(final float val) {
		modStrength += val;
	}
	/**
	 * Adjusts the score modifier for the SurpriseBonus ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModSurpriseBonus(final float val) {
		modSurpriseBonus += val;
	}
	/**
	 * Adjusts the score modifier for the SurviveRaiseDead ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModSurviveRaiseDead(final float val) {
		modSurviveRaiseDead += val;
	}
	/**
	 * Adjusts the score modifier for the SurviveRez ability by a certain
	 * amount.
	 * @param val the modifier applied
	 */
	public void adjModSurviveRez(final float val) {
		modSurviveRez += val;
	}
	/**
	 * Adjusts the score modifier for the SurviveSystemShock ability by a
	 * certain amount.
	 * @param val the modifier applied
	 */
	public void adjModSurviveSystemShock(final float val) {
		modSurviveSystemShock += val;
	}
	/**
	 * Adjusts the score modifier for the Wisdom ability by a certain amount.
	 * @param val the modifier applied
	 */
	public void adjModWisdom(final float val) {
		modWisdom += val;
	}
	/** Clears all professions that were set. */
	public final void clearProfessions() {
		professions = 0;
	}
	/**
	 * Gets the character's base ACAdjustment score.
	 * @return <code>float</code>
	 */
	public int getBaseACAdjustment() {
		Integer val = null;
		if (fullDexterity < 16) {
			// DEX <= 3
			val = 4;
		} else if (fullDexterity >= 16
				&& fullDexterity < 20) {
			// DEX == 4
			val = 3;
		} else if (fullDexterity >= 20
				&& fullDexterity < 24) {
			// DEX == 5
			val = 2;
		} else if (fullDexterity >= 24
				&& fullDexterity < 28) {
			// DEX == 6
			val = 1;
		} else if (fullDexterity >= 28
				&& fullDexterity < 60) {
			// DEX >=7 && DEX <= 14
			val = 0;
		} else if (fullDexterity >= 60
				&& fullDexterity < 64) {
			// DEX == 15
			val = -1;
		} else if (fullDexterity >= 64
				&& fullDexterity < 68) {
			// DEX == 16
			val = -2;
		} else if (fullDexterity >= 68
				&& fullDexterity < 72) {
			// DEX == 17
			val = -3;
		} else if (fullDexterity >= 72) {
			// DEX >= 18
			val = -4;
		}
		return val;
	}
	/**
	 * Gets the character's base BendBars score.
	 * @return <code>float</code>
	 */
	public int getBaseBendBars() {
		Integer val = null;
		if (fullStrength < 32f) {
			// STR <= 7
			val = 0;
		} else if (fullStrength >= 32f
				&& fullStrength < 40f) {
			// STR >= 8 && STR <= 9
			val = 1;
		} else if (fullStrength >= 40f
				&& fullStrength < 48f) {
			// STR >= 10 && STR <= 11
			val = 2;
		} else if (fullStrength >= 48f
				&& fullStrength < 56f) {
			// STR >= 12 && STR <= 13
			val = 4;
		} else if (fullStrength >= 56f
				&& fullStrength < 64f) {
			// STR >= 14 && STR <= 15
			val = 7;
		} else if (fullStrength >= 64f
				&& fullStrength < 68f) {
			// STR == 16
			val = 10;
		} else if (fullStrength >= 68f
				&& fullStrength < 72f) {
			// STR == 17
			val = 13;
		} else if (fullStrength == 72f) {
			// STR == 18
			val = 16;
		} else if (fullStrength > 72f
				&& fullStrength <= 74f) {
			// STR >= 18.01 && STR <= 18.50
			val = 20;
		} else if (fullStrength > 74f
				&& fullStrength <= 75f) {
			// STR >= 18.51 && STR <= 18.75
			val = 25;
		} else if (fullStrength > 75f
				&& fullStrength <= 75.6f) {
			// STR >= 18.76 && STR <= 18.90
			val = 30;
		} else if (fullStrength > 75.6f
				&& fullStrength < 76f) {
			// STR >= 18.91 && STR <= 18.99
			val = 35;
		} else if (fullStrength >= 76f) {
			// STR >= 19
			val = 40;
		}
		return val;
	}
	/**
	 * Gets the character's base Charisma score.
	 * @return <code>float</code>
	 */
	public float getBaseCharisma() {
		return baseCharisma;
	}
	/**
	 * Gets the character's base Constitution score.
	 * @return <code>float</code>
	 */
	public float getBaseConstitution() {
		return baseConstitution;
	}
	/**
	 * Gets the character's base Dexterity score.
	 * @return <code>float</code>
	 */
	public float getBaseDexterity() {
		return baseDexterity;
	}
	/**
	 * Gets the character's base DmgBonus score.
	 * @return <code>float</code>
	 */
	public int getBaseDmgBonus() {
		Integer val = null;
		if (fullStrength < 24f) {
			// STR <= 5
			val = -1;
		} else if (fullStrength >= 24f
				&& fullStrength < 64f) {
			// STR >= 6 && STR <= 15
			val = 0;
		} else if (fullStrength >= 64f
				&& fullStrength < 72f) {
			// STR >= 16 && STR <= 17
			val = 1;
		} else if (fullStrength == 72f) {
			// STR == 18
			val = 2;
		} else if (fullStrength > 72f
				&& fullStrength <= 75f) {
			// STR >= 18.51 && STR <= 18.75
			val = 3;
		} else if (fullStrength > 75f
				&& fullStrength <= 75.6f) {
			// STR >= 18.76 && STR <= 18.90
			val = 4;
		} else if (fullStrength > 75.6f
				&& fullStrength < 76f) {
			// STR >= 18.91 && STR <= 18.99
			val = 5;
		} else if (fullStrength >= 76f) {
			// STR >= 19
			val = 6;
		}
		return val;
	}
	/**
	 * Gets the character's base EncumbranceAdjustment score.
	 * @return <code>float</code>
	 */
	public int getBaseEncumbranceAdjustment() {
		Integer val = null;
		if (fullStrength < 16f) {
			// STR <= 3
			val = -35;
		} else if (fullStrength >= 16f
				&& fullStrength < 24f) {
			// STR >= 4 && STR <= 5
			val = -25;
		} else if (fullStrength >= 24f
				&& fullStrength < 32f) {
			// STR >= 6 && STR <= 7
			val = -15;
		} else if (fullStrength >= 32f
				&& fullStrength < 48f) {
			// STR >= 8 && STR <= 11
			val = 0;
		} else if (fullStrength >= 48f
				&& fullStrength < 56f) {
			// STR >= 12 && STR <= 13
			val = 10;
		} else if (fullStrength >= 56f
				&& fullStrength < 64f) {
			// STR >= 14 && STR <= 15
			val = 20;
		} else if (fullStrength >= 64f
				&& fullStrength < 68f) {
			// STR == 16
			val = 35;
		} else if (fullStrength >= 68f
				&& fullStrength < 72f) {
			// STR == 17
			val = 50;
		} else if (fullStrength == 72f) {
			// STR == 18
			val = 75;
		} else if (fullStrength > 72f
				&& fullStrength <= 74f) {
			// STR >= 18.01 && STR <= 18.50
			val = 100;
		} else if (fullStrength > 74f
				&& fullStrength <= 75f) {
			// STR >= 18.51 && STR <= 18.75
			val = 125;
		} else if (fullStrength > 75f
				&& fullStrength <= 75.6f) {
			// STR >= 18.76 && STR <= 18.90
			val = 150;
		} else if (fullStrength > 75.6f
				&& fullStrength < 76f) {
			// STR >= 18.91 && STR <= 18.99
			val = 200;
		} else if (fullStrength >= 76f) {
			// STR >= 19
			val = 300;
		}
		return val;
	}
	/**
	 * Gets the character's base ForceDoors score.
	 * @return <code>float</code>
	 */
	public int[] getBaseForceDoors() {
		Integer val0 = null, val1 = null;
		if (fullStrength < 32f) {
			// STR <= 7
			val0 = 1;
			val1 = 0;
		} else if (fullStrength >= 32f
				&& fullStrength < 64f) {
			// STR >= 8 && STR <= 15
			val0 = 2;
			val1 = 0;
		} else if (fullStrength >= 64f
				&& fullStrength <= 74f) {
			// STR >= 16 && STR <= 18.50
			val0 = 3;
			val1 = 0;
		} else if (fullStrength > 74f
				&& fullStrength <= 75.6f) {
			// STR >= 18.51 && STR <= 18.90
			val0 = 4;
			val1 = 0;
		} else if (fullStrength > 75.6f
				&& fullStrength < 76f) {
			// STR >= 18.91 && STR <= 18.99
			val0 = 4;
			val1 = 1;
		} else if (fullStrength >= 76f) {
			// STR >= 19
			val0 = 5;
			val1 = 1;
		}
		return new int[] { val0, val1 };
	}
	/**
	 * Gets the character's base HitBonus score.
	 * @return <code>float</code>
	 */
	public int getBaseHitBonus() {
		Integer val = null;
		if (fullStrength < 16f) {
			// STR <= 3
			val = -3;
		} else if (fullStrength >= 16f
				&& fullStrength < 24f) {
			// STR >= 4 && STR <= 5
			val = -2;
		} else if (fullStrength >= 24f
				&& fullStrength < 32f) {
			// STR >= 6 && STR <= 7
			val = -1;
		} else if (fullStrength >= 32f
				&& fullStrength < 68f) {
			// STR >= 8 && STR <= 16
			val = 0;
		} else if (fullStrength >= 68f
				&& fullStrength <= 74f) {
			// STR >= 17 && STR <= 18.50
			val = 1;
		} else if (fullStrength > 74f
				&& fullStrength < 76f) {
			// STR >= 18.51 && STR <= 18.99
			val = 2;
		} else if (fullStrength >= 76f) {
			// STR >= 19
			val = 3;
		}
		return val;
	}
	/**
	 * Gets the character's base HP score.
	 * @return <code>float</code>
	 */
	public float getBaseHP() {
		return baseHP;
	}
	/**
	 * Gets the character's base HPBonus score.
	 * @return <code>float</code>
	 */
	public int getBaseHPBonus() {
		Integer val = null;
		if (fullConstitution < 16) {
			// CON == 3
			val = -2;
		} else if (fullConstitution >= 16
				&& fullConstitution < 28) {
			// CON >= 4 && CON <= 6
			val = -1;
		} else if (fullConstitution >= 28
				&& fullConstitution < 60) {
			// CON >= 7 && CON <= 14
			val = 0;
		} else if (fullConstitution >= 60
				&& fullConstitution < 64) {
			// CON == 15
			val = 1;
		} else if (fullConstitution >= 64
				&& fullConstitution < 68) {
			// CON >= 16
			val = 2;
		} else if (fullConstitution >= 68
				&& fullConstitution < 72) {
			// CON == 17
			val = 2;
			if (hasProfession(1 << ProfessionConsts.PROFESSION_FIGHTER)
					|| hasProfession(1 << ProfessionConsts.PROFESSION_PALADIN)
					|| hasProfession(1 << ProfessionConsts.PROFESSION_RANGER)) {
				val = 3;
			}
		} else if (fullConstitution >= 72
				&& fullConstitution < 76) {
			// CON == 18
			val = 2;
			if (hasProfession(1 << ProfessionConsts.PROFESSION_FIGHTER)
					|| hasProfession(1 << ProfessionConsts.PROFESSION_PALADIN)
					|| hasProfession(1 << ProfessionConsts.PROFESSION_RANGER)) {
				val = 4;
			}
		} else if (fullConstitution >= 76) {
			// CON == 19
			val = 2;
			if (hasProfession(1 << ProfessionConsts.PROFESSION_FIGHTER)
					|| hasProfession(1 << ProfessionConsts.PROFESSION_PALADIN)
					|| hasProfession(1 << ProfessionConsts.PROFESSION_RANGER)) {
				val = 5;
			}
		}
		return val;
	}
	/**
	 * Gets the character's base Intelligence score.
	 * @return <code>float</code>
	 */
	public float getBaseIntelligence() {
		return baseIntelligence;
	}
	/**
	 * Gets the character's base LoyaltyBonus score.
	 * @return <code>float</code>
	 */
	public int getBaseLoyaltyBonus() {
		Integer val = null;
		if (fullCharisma < 16) {
			// CHA <= 3
			val = -30;
		} else if (fullCharisma >= 16
				&& fullCharisma < 20) {
			// CHA == 4
			val = -25;
		} else if (fullCharisma >= 20
				&& fullCharisma < 24) {
			// CHA == 5
			val = -20;
		} else if (fullCharisma >= 24
				&& fullCharisma < 28) {
			// CHA == 6
			val = -15;
		} else if (fullCharisma >= 28
				&& fullCharisma < 32) {
			// CHA == 7
			val = -10;
		} else if (fullCharisma >= 32
				&& fullCharisma < 36) {
			// CHA == 8
			val = -5;
		} else if (fullCharisma >= 36
				&& fullCharisma < 56) {
			// CHA >= 9 && CHA <= 13
			val = 0;
		} else if (fullCharisma >= 56
				&& fullCharisma < 60) {
			// CHA == 14
			val = 5;
		} else if (fullCharisma >= 60
				&& fullCharisma < 64) {
			// CHA == 15
			val = 15;
		} else if (fullCharisma >= 64
				&& fullCharisma < 68) {
			// CHA == 16
			val = 20;
		} else if (fullCharisma >= 68
				&& fullCharisma < 72) {
			// CHA == 17
			val = 30;
		} else if (fullCharisma >= 72
				&& fullCharisma < 76) {
			// CHA == 18
			val = 40;
		} else if (fullCharisma >= 76) {
			// CHA == 19
			val = 50;
		}
		return val;
	}
	/**
	 * Gets the character's base MaxAddlLanguages score.
	 * @return <code>float</code>
	 */
	public int getBaseMaxAddlLanguages() {
		Integer val = null;
		if (fullIntelligence < 32) {
			// INT <= 7
			val = 0;
		} else if (fullIntelligence >= 32
				&& fullIntelligence < 40) {
			// INT >= 8 && INT <= 9
			val = 1;
		} else if (fullIntelligence >= 40
				&& fullIntelligence < 48) {
			// INT >= 10 && INT <= 11
			val = 2;
		} else if (fullIntelligence >= 48
				&& fullIntelligence < 56) {
			// INT >= 12 && INT <= 13
			val = 3;
		} else if (fullIntelligence >= 56
				&& fullIntelligence < 64) {
			// INT >= 14 && INT <= 15
			val = 4;
		} else if (fullIntelligence >= 64
				&& fullIntelligence < 68) {
			// INT == 16
			val = 5;
		} else if (fullIntelligence >= 68
				&& fullIntelligence < 72) {
			// INT == 17
			val = 6;
		} else if (fullIntelligence >= 72
				&& fullIntelligence < 76) {
			// INT == 18
			val = 7;
		} else if (fullIntelligence >= 76) {
			// INT == 19
			val = 8;
		}
		return val;
	}
	/**
	 * Gets the character's base MaxHenchmen score.
	 * @return <code>float</code>
	 */
	public int getBaseMaxHenchmen() {
		Integer val = null;
		if (fullCharisma < 20) {
			// CHA <= 4
			val = 1;
		} else if (fullCharisma >= 20
				&& fullCharisma < 28) {
			// CHA >= 4 && CHA <= 6
			val = 2;
		} else if (fullCharisma >= 28
				&& fullCharisma < 36) {
			// CHA >= 7 && CHA <= 8
			val = 3;
		} else if (fullCharisma >= 36
				&& fullCharisma < 48) {
			// CHA >= 9 && CHA <= 11
			val = 4;
		} else if (fullCharisma >= 48
				&& fullCharisma < 56) {
			// CHA >= 12 && CHA <= 13
			val = 5;
		} else if (fullCharisma >= 56
				&& fullCharisma < 60) {
			// CHA == 14
			val = 6;
		} else if (fullCharisma >= 60
				&& fullCharisma < 64) {
			// CHA == 15
			val = 7;
		} else if (fullCharisma >= 64
				&& fullCharisma < 68) {
			// CHA == 16
			val = 8;
		} else if (fullCharisma >= 68
				&& fullCharisma < 72) {
			// CHA == 17
			val = 10;
		} else if (fullCharisma >= 72
				&& fullCharisma < 76) {
			// CHA == 18
			val = 15;
		} else if (fullCharisma >= 76) {
			// CHA >= 19
			val = 20;
		}
		return val;
	}
	/**
	 * Gets the character's base MaxHP score.
	 * @return <code>float</code>
	 */
	public float getBaseMaxHP() {
		return baseMaxHP;
	}
	/**
	 * Gets the character's base MentalSavingThrowBonus score.
	 * @return <code>float</code>
	 */
	public int getBaseMentalSavingThrowBonus() {
		Integer val = null;
		if (fullWisdom < 16) {
			// WIS <= 3
			val = -3;
		} else if (fullWisdom >= 16
				&& fullWisdom < 20) {
			// WIS == 4
			val = -2;
		} else if (fullWisdom >= 20
				&& fullWisdom < 32) {
			// WIS >= 5 && WIS <= 7
			val = -1;
		} else if (fullWisdom >= 32
				&& fullWisdom < 60) {
			// WIS >= 8 && WIS <= 14
			val = 0;
		} else if (fullWisdom >= 60
				&& fullWisdom < 64) {
			// WIS == 15
			val = 1;
		} else if (fullWisdom >= 64
				&& fullWisdom < 68) {
			// WIS == 16
			val = 2;
		} else if (fullWisdom >= 68
				&& fullWisdom < 72) {
			// WIS == 17
			val = 3;
		} else if (fullWisdom >= 72
				&& fullWisdom < 76) {
			// WIS == 18
			val = 4;
		} else if (fullWisdom >= 76) {
			// WIS == 19
			val = 5;
		}
		return val;
	}
	/**
	 * Gets the character's base MissileBonus score.
	 * @return <code>float</code>
	 */
	public int getBaseMissileBonus() {
		Integer val = null;
		if (fullDexterity < 16) {
			// DEX <= 3
			val = -3;
		} else if (fullDexterity >= 16
				&& fullDexterity < 20) {
			// DEX == 4
			val = -2;
		} else if (fullDexterity >= 20
				&& fullDexterity < 24) {
			// DEX == 5
			val = -1;
		} else if (fullDexterity >= 24
				&& fullDexterity < 64) {
			// DEX >= 6 && DEX <= 15
			val = 0;
		} else if (fullDexterity >= 64
				&& fullDexterity < 68) {
			// DEX == 16
			val = 1;
		} else if (fullDexterity >= 68
				&& fullDexterity < 72) {
			// DEX == 17
			val = 2;
		} else if (fullDexterity >= 72) {
			// DEX >= 18
			val = 3;
		}
		return val;
	}
	/**
	 * Gets the character's base ReactionBonus score.
	 * @return <code>float</code>
	 */
	public int getBaseReactionBonus() {
		Integer val = null;
		if (fullCharisma < 16) {
			// CHA <= 3
			val = -25;
		} else if (fullCharisma >= 16
				&& fullCharisma < 20) {
			// CHA == 4
			val = -20;
		} else if (fullCharisma >= 20
				&& fullCharisma < 24) {
			// CHA == 5
			val = -15;
		} else if (fullCharisma >= 24
				&& fullCharisma < 28) {
			// CHA == 6
			val = -10;
		} else if (fullCharisma >= 28
				&& fullCharisma < 32) {
			// CHA == 7
			val = -5;
		} else if (fullCharisma >= 32
				&& fullCharisma < 52) {
			// CHA >= 8 && CHA <= 12
			val = 0;
		} else if (fullCharisma >= 52
				&& fullCharisma < 56) {
			// CHA == 13
			val = 5;
		} else if (fullCharisma >= 56
				&& fullCharisma < 60) {
			// CHA == 14
			val = 10;
		} else if (fullCharisma >= 60
				&& fullCharisma < 64) {
			// CHA == 15
			val = 15;
		} else if (fullCharisma >= 64
				&& fullCharisma < 68) {
			// CHA == 16
			val = 25;
		} else if (fullCharisma >= 68
				&& fullCharisma < 72) {
			// CHA == 17
			val = 30;
		} else if (fullCharisma >= 72
				&& fullCharisma < 76) {
			// CHA == 18
			val = 35;
		} else if (fullCharisma >= 76) {
			// CHA == 19
			val = 40;
		}
		return val;
	}
	/**
	 * Gets the character's base Strength score.
	 * @return <code>float</code>
	 */
	public float getBaseStrength() {
		return baseStrength;
	}
	/**
	 * Gets the character's base SurpriseBonus score.
	 * @return <code>float</code>
	 */
	public int getBaseSurpriseBonus() {
		Integer val = null;
		if (fullDexterity < 16) {
			// DEX <= 3
			val = -3;
		} else if (fullDexterity >= 16
				&& fullDexterity < 20) {
			// DEX == 4
			val = -2;
		} else if (fullDexterity >= 20
				&& fullDexterity < 24) {
			// DEX == 5
			val = -1;
		} else if (fullDexterity >= 24
				&& fullDexterity < 64) {
			// DEX >= 6 && DEX <= 15
			val = 0;
		} else if (fullDexterity >= 64
				&& fullDexterity < 68) {
			// DEX == 16
			val = 1;
		} else if (fullDexterity >= 68
				&& fullDexterity < 72) {
			// DEX == 17
			val = 2;
		} else if (fullDexterity >= 72) {
			// DEX >= 18
			val = 3;
		}
		return val;
	}
	/**
	 * Gets the character's base SurviveRaiseDead score.
	 * @return <code>float</code>
	 */
	public int getBaseSurviveRaiseDead() {
		Integer val = null;
		if (fullConstitution < 16) {
			// CON == 3
			val = 40;
		} else if (fullConstitution >= 16
				&& fullConstitution < 20) {
			// CON == 4
			val = 45;
		} else if (fullConstitution >= 20
				&& fullConstitution < 24) {
			// CON == 5
			val = 50;
		} else if (fullConstitution >= 24
				&& fullConstitution < 28) {
			// CON == 6
			val = 55;
		} else if (fullConstitution >= 28
				&& fullConstitution < 32) {
			// CON == 7
			val = 60;
		} else if (fullConstitution >= 32
				&& fullConstitution < 36) {
			// CON == 8
			val = 65;
		} else if (fullConstitution >= 36
				&& fullConstitution < 40) {
			// CON == 9
			val = 70;
		} else if (fullConstitution >= 40
				&& fullConstitution < 44) {
			// CON == 10
			val = 75;
		} else if (fullConstitution >= 44
				&& fullConstitution < 48) {
			// CON == 11
			val = 80;
		} else if (fullConstitution >= 48
				&& fullConstitution < 52) {
			// CON == 12
			val = 85;
		} else if (fullConstitution >= 52
				&& fullConstitution < 56) {
			// CON == 13
			val = 90;
		} else if (fullConstitution >= 56
				&& fullConstitution < 60) {
			// CON == 14
			val = 92;
		} else if (fullConstitution >= 60
				&& fullConstitution < 64) {
			// CON == 15
			val = 94;
		} else if (fullConstitution >= 64
				&& fullConstitution < 68) {
			// CON == 16
			val = 96;
		} else if (fullConstitution >= 68
				&& fullConstitution < 72) {
			// CON == 17
			val = 98;
		} else if (fullConstitution >= 72) {
			// CON >= 18
			val = 100;
		}
		return val;
	}
	/**
	 * Gets the character's base SurviveRez score.
	 * @return <code>float</code>
	 */
	public int getBaseSurviveRez() {
		Integer val = null;
		if (fullConstitution < 16) {
			// CON == 3
			val = 40;
		} else if (fullConstitution >= 16
				&& fullConstitution < 20) {
			// CON == 4
			val = 45;
		} else if (fullConstitution >= 20
				&& fullConstitution < 24) {
			// CON == 5
			val = 50;
		} else if (fullConstitution >= 24
				&& fullConstitution < 28) {
			// CON == 6
			val = 55;
		} else if (fullConstitution >= 28
				&& fullConstitution < 32) {
			// CON == 7
			val = 60;
		} else if (fullConstitution >= 32
				&& fullConstitution < 36) {
			// CON == 8
			val = 65;
		} else if (fullConstitution >= 36
				&& fullConstitution < 40) {
			// CON == 9
			val = 70;
		} else if (fullConstitution >= 40
				&& fullConstitution < 44) {
			// CON == 10
			val = 75;
		} else if (fullConstitution >= 44
				&& fullConstitution < 48) {
			// CON == 11
			val = 80;
		} else if (fullConstitution >= 48
				&& fullConstitution < 52) {
			// CON == 12
			val = 85;
		} else if (fullConstitution >= 52
				&& fullConstitution < 56) {
			// CON == 13
			val = 90;
		} else if (fullConstitution >= 56
				&& fullConstitution < 60) {
			// CON == 14
			val = 92;
		} else if (fullConstitution >= 60
				&& fullConstitution < 64) {
			// CON == 15
			val = 94;
		} else if (fullConstitution >= 64
				&& fullConstitution < 68) {
			// CON == 16
			val = 96;
		} else if (fullConstitution >= 68
				&& fullConstitution < 72) {
			// CON == 17
			val = 98;
		} else if (fullConstitution >= 72) {
			// CON >= 18
			val = 100;
		}
		return val;
	}
	/**
	 * Gets the character's base SurviveSystemShock score.
	 * @return <code>float</code>
	 */
	public int getBaseSurviveSystemShock() {
		Integer val = null;
		if (fullConstitution < 16) {
			// CON == 3
			val = 35;
		} else if (fullConstitution >= 16
				&& fullConstitution < 20) {
			// CON == 4
			val = 40;
		} else if (fullConstitution >= 20
				&& fullConstitution < 24) {
			// CON == 5
			val = 45;
		} else if (fullConstitution >= 24
				&& fullConstitution < 28) {
			// CON == 6
			val = 50;
		} else if (fullConstitution >= 28
				&& fullConstitution < 32) {
			// CON == 7
			val = 55;
		} else if (fullConstitution >= 32
				&& fullConstitution < 36) {
			// CON == 8
			val = 60;
		} else if (fullConstitution >= 36
				&& fullConstitution < 40) {
			// CON == 9
			val = 65;
		} else if (fullConstitution >= 40
				&& fullConstitution < 44) {
			// CON == 10
			val = 70;
		} else if (fullConstitution >= 44
				&& fullConstitution < 48) {
			// CON == 11
			val = 75;
		} else if (fullConstitution >= 48
				&& fullConstitution < 52) {
			// CON == 12
			val = 80;
		} else if (fullConstitution >= 52
				&& fullConstitution < 56) {
			// CON == 13
			val = 85;
		} else if (fullConstitution >= 56
				&& fullConstitution < 60) {
			// CON == 14
			val = 88;
		} else if (fullConstitution >= 60
				&& fullConstitution < 64) {
			// CON == 15
			val = 91;
		} else if (fullConstitution >= 64
				&& fullConstitution < 68) {
			// CON == 16
			val = 95;
		} else if (fullConstitution >= 68
				&& fullConstitution < 72) {
			// CON == 17
			val = 97;
		} else if (fullConstitution >= 72) {
			// CON >= 18
			val = 99;
		}
		return val;
	}
	/**
	 * Gets the character's base Wisdom score.
	 * @return <code>float</code>
	 */
	public float getBaseWisdom() {
		return baseWisdom;
	}
	/**
	 * Gets the full value of the character's ACAdjustment score.
	 * @return <code>float</code>
	 */
	public float getFullACAdjustment() {
		return fullACAdjustment;
	}
	/**
	 * Gets the full value of the character's BendBars score.
	 * @return <code>float</code>
	 */
	public float getFullBendBars() {
		return fullBendBars;
	}
	/**
	 * Gets the full value of the character's Charisma score.
	 * @return <code>float</code>
	 */
	public float getFullCharisma() {
		return fullCharisma;
	}
	/**
	 * Gets the full value of the character's Constitution score.
	 * @return <code>float</code>
	 */
	public float getFullConstitution() {
		return fullConstitution;
	}
	/**
	 * Gets the full value of the character's Dexterity score.
	 * @return <code>float</code>
	 */
	public float getFullDexterity() {
		return fullDexterity;
	}
	/**
	 * Gets the full value of the character's DmgBonus score.
	 * @return <code>float</code>
	 */
	public float getFullDmgBonus() {
		return fullDmgBonus;
	}
	/**
	 * Gets the full value of the character's EncumbranceAdjustment score.
	 * @return <code>float</code>
	 */
	public float getFullEncumbranceAdjustment() {
		return fullEncumbranceAdjustment;
	}
	/**
	 * Gets the full value of the character's ForceDoors score.
	 * @return <code>float</code>
	 */
	public float getFullForceDoors() {
		return fullForceDoors;
	}
	/**
	 * Gets the full value of the character's HitBonus score.
	 * @return <code>float</code>
	 */
	public float getFullHitBonus() {
		return fullHitBonus;
	}
	/**
	 * Gets the full value of the character's HP score.
	 * @return <code>float</code>
	 */
	public float getFullHP() {
		return fullHP;
	}
	/**
	 * Gets the full value of the character's HPBonus score.
	 * @return <code>float</code>
	 */
	public float getFullHPBonus() {
		return fullHPBonus;
	}
	/**
	 * Gets the full value of the character's Intelligence score.
	 * @return <code>float</code>
	 */
	public float getFullIntelligence() {
		return fullIntelligence;
	}
	/**
	 * Gets the full value of the character's LoyaltyBonus score.
	 * @return <code>float</code>
	 */
	public float getFullLoyaltyBonus() {
		return fullLoyaltyBonus;
	}
	/**
	 * Gets the full value of the character's MaxAddlLanguages score.
	 * @return <code>float</code>
	 */
	public float getFullMaxAddlLanguages() {
		return fullMaxAddlLanguages;
	}
	/**
	 * Gets the full value of the character's MaxHenchmen score.
	 * @return <code>float</code>
	 */
	public float getFullMaxHenchmen() {
		return fullMaxHenchmen;
	}
	/**
	 * Gets the full value of the character's MaxHP score.
	 * @return <code>float</code>
	 */
	public float getFullMaxHP() {
		return fullMaxHP;
	}
	/**
	 * Gets the full value of the character's MentalSavingThrowBonus score.
	 * @return <code>float</code>
	 */
	public float getFullMentalSavingThrowBonus() {
		return fullMentalSavingThrowBonus;
	}
	/**
	 * Gets the full value of the character's MissileBonus score.
	 * @return <code>float</code>
	 */
	public float getFullMissileBonus() {
		return fullMissileBonus;
	}
	/**
	 * Gets the full value of the character's ReactionBonus score.
	 * @return <code>float</code>
	 */
	public float getFullReactionBonus() {
		return fullReactionBonus;
	}
	/**
	 * Gets the full value of the character's Strength score.
	 * @return <code>float</code>
	 */
	public float getFullStrength() {
		return fullStrength;
	}
	/**
	 * Gets the full value of the character's SurpriseBonus score.
	 * @return <code>float</code>
	 */
	public float getFullSurpriseBonus() {
		return fullSurpriseBonus;
	}
	/**
	 * Gets the full value of the character's SurviveRaiseDead score.
	 * @return <code>float</code>
	 */
	public float getFullSurviveRaiseDead() {
		return fullSurviveRaiseDead;
	}
	/**
	 * Gets the full value of the character's SurviveRez score.
	 * @return <code>float</code>
	 */
	public float getFullSurviveRez() {
		return fullSurviveRez;
	}
	/**
	 * Gets the full value of the character's SurviveSystemShock score.
	 * @return <code>float</code>
	 */
	public float getFullSurviveSystemShock() {
		return fullSurviveSystemShock;
	}
	/**
	 * Gets the full value of the character's Wisdom score.
	 * @return <code>float</code>
	 */
	public float getFullWisdom() {
		return fullWisdom;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * ACAdjustment score.
	 * @return <code>float</code>
	 */
	public float getModACAdjustment() {
		return modACAdjustment;
	}
	/**
	 * Gets the value of the modifier applied to the character's base BendBars
	 * score.
	 * @return <code>float</code>
	 */
	public float getModBendBars() {
		return modBendBars;
	}
	/**
	 * Gets the value of the modifier applied to the character's base Charisma
	 * score.
	 * @return <code>float</code>
	 */
	public float getModCharisma() {
		return modCharisma;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * Constitution score.
	 * @return <code>float</code>
	 */
	public float getModConstitution() {
		return modConstitution;
	}
	/**
	 * Gets the value of the modifier applied to the character's base Dexterity
	 * score.
	 * @return <code>float</code>
	 */
	public float getModDexterity() {
		return modDexterity;
	}
	/**
	 * Gets the value of the modifier applied to the character's base DmgBonus
	 * score.
	 * @return <code>float</code>
	 */
	public float getModDmgBonus() {
		return modDmgBonus;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * EncumbranceAdjustment score.
	 * @return <code>float</code>
	 */
	public float getModEncumbranceAdjustment() {
		return modEncumbranceAdjustment;
	}
	/**
	 * Gets the value of the modifier applied to the character's base ForceDoors
	 * score.
	 * @return <code>float</code>
	 */
	public float getModForceDoors() {
		return modForceDoors;
	}
	/**
	 * Gets the value of the modifier applied to the character's base HitBonus
	 * score.
	 * @return <code>float</code>
	 */
	public float getModHitBonus() {
		return modHitBonus;
	}
	/**
	 * Gets the value of the modifier applied to the character's base HP score.
	 * @return <code>float</code>
	 */
	public float getModHP() {
		return modHP;
	}
	/**
	 * Gets the value of the modifier applied to the character's base HPBonus
	 * score.
	 * @return <code>float</code>
	 */
	public float getModHPBonus() {
		return modHPBonus;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * Intelligence score.
	 * @return <code>float</code>
	 */
	public float getModIntelligence() {
		return modIntelligence;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * LoyaltyBonus score.
	 * @return <code>float</code>
	 */
	public float getModLoyaltyBonus() {
		return modLoyaltyBonus;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * MaxAddlLanguages score.
	 * @return <code>float</code>
	 */
	public float getModMaxAddlLanguages() {
		return modMaxAddlLanguages;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * MaxHenchmen score.
	 * @return <code>float</code>
	 */
	public float getModMaxHenchmen() {
		return modMaxHenchmen;
	}
	/**
	 * Gets the value of the modifier applied to the character's base MaxHP
	 * score.
	 * @return <code>float</code>
	 */
	public float getModMaxHP() {
		return modMaxHP;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * MentalSavingThrowBonus score.
	 * @return <code>float</code>
	 */
	public float getModMentalSavingThrowBonus() {
		return modMentalSavingThrowBonus;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * MissileBonus score.
	 * @return <code>float</code>
	 */
	public float getModMissileBonus() {
		return modMissileBonus;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * ReactionBonus score.
	 * @return <code>float</code>
	 */
	public float getModReactionBonus() {
		return modReactionBonus;
	}
	/**
	 * Gets the value of the modifier applied to the character's base Strength
	 * score.
	 * @return <code>float</code>
	 */
	public float getModStrength() {
		return modStrength;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * SurpriseBonus score.
	 * @return <code>float</code>
	 */
	public float getModSurpriseBonus() {
		return modSurpriseBonus;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * SurviveRaiseDead score.
	 * @return <code>float</code>
	 */
	public float getModSurviveRaiseDead() {
		return modSurviveRaiseDead;
	}
	/**
	 * Gets the value of the modifier applied to the character's base SurviveRez
	 * score.
	 * @return <code>float</code>
	 */
	public float getModSurviveRez() {
		return modSurviveRez;
	}
	/**
	 * Gets the value of the modifier applied to the character's base
	 * SurviveSystemShock score.
	 * @return <code>float</code>
	 */
	public float getModSurviveSystemShock() {
		return modSurviveSystemShock;
	}
	/**
	 * Gets the value of the modifier applied to the character's base Wisdom
	 * score.
	 * @return <code>float</code>
	 */
	public float getModWisdom() {
		return modWisdom;
	}
	/**
	 * Determines if the {@link IOPCData} has a specific flag.
	 * @param flag the flag
	 * @return true if the {@link IOPCData} has the flag; false otherwise
	 */
	public final boolean hasProfession(final long flag) {
		return (professions & flag) == flag;
	}
	/**
	 * Removes a profession.
	 * @param flag the flag
	 */
	public final void removeProfession(final long flag) {
		professions &= ~flag;
	}
	/**
	 * Sets the character's base Charisma score.
	 * @param val the new value
	 */
	public void setBaseCharisma(final float val) {
		baseCharisma = val;
	}
	/**
	 * Sets the character's base Constitution score.
	 * @param val the new value
	 */
	public void setBaseConstitution(final float val) {
		baseConstitution = val;
	}
	/**
	 * Sets the character's base Dexterity score.
	 * @param val the new value
	 */
	public void setBaseDexterity(final float val) {
		baseDexterity = val;
	}
	/**
	 * Sets the character's base HP score.
	 * @param val the new value
	 */
	public void setBaseHP(final float val) {
		baseHP = val;
	}
	/**
	 * Sets the character's base Intelligence score.
	 * @param val the new value
	 */
	public void setBaseIntelligence(final float val) {
		baseIntelligence = val;
	}
	/**
	 * Sets the character's base MaxHP score.
	 * @param val the new value
	 */
	public void setBaseMaxHP(final float val) {
		baseMaxHP = val;
	}
	/**
	 * Sets the character's base Strength score.
	 * @param val the new value
	 */
	public void setBaseStrength(final float val) {
		baseStrength = val;
	}
	/**
	 * Sets the character's base Wisdom score.
	 * @param val the new value
	 */
	public void setBaseWisdom(final float val) {
		baseWisdom = val;
	}
	/**
	 * Sets the full value of the character's ACAdjustment score.
	 * @param val the new value
	 */
	public void setFullACAdjustment(final float val) {
		fullACAdjustment = val;
	}
	/**
	 * Sets the full value of the character's BendBars score.
	 * @param val the new value
	 */
	public void setFullBendBars(final float val) {
		fullBendBars = val;
	}
	/**
	 * Sets the full value of the character's Charisma score.
	 * @param val the new value
	 */
	public void setFullCharisma(final float val) {
		fullCharisma = val;
	}
	/**
	 * Sets the full value of the character's Constitution score.
	 * @param val the new value
	 */
	public void setFullConstitution(final float val) {
		fullConstitution = val;
	}
	/**
	 * Sets the full value of the character's Dexterity score.
	 * @param val the new value
	 */
	public void setFullDexterity(final float val) {
		fullDexterity = val;
	}
	/**
	 * Sets the full value of the character's DmgBonus score.
	 * @param val the new value
	 */
	public void setFullDmgBonus(final float val) {
		fullDmgBonus = val;
	}
	/**
	 * Sets the full value of the character's EncumbranceAdjustment score.
	 * @param val the new value
	 */
	public void setFullEncumbranceAdjustment(final float val) {
		fullEncumbranceAdjustment = val;
	}
	/**
	 * Sets the full value of the character's ForceDoors score.
	 * @param val the new value
	 */
	public void setFullForceDoors(final float val) {
		fullForceDoors = val;
	}
	/**
	 * Sets the full value of the character's HitBonus score.
	 * @param val the new value
	 */
	public void setFullHitBonus(final float val) {
		fullHitBonus = val;
	}
	/**
	 * Sets the full value of the character's HP score.
	 * @param val the new value
	 */
	public void setFullHP(final float val) {
		fullHP = val;
	}
	/**
	 * Sets the full value of the character's HPBonus score.
	 * @param val the new value
	 */
	public void setFullHPBonus(final float val) {
		fullHPBonus = val;
	}
	/**
	 * Sets the full value of the character's Intelligence score.
	 * @param val the new value
	 */
	public void setFullIntelligence(final float val) {
		fullIntelligence = val;
	}
	/**
	 * Sets the full value of the character's LoyaltyBonus score.
	 * @param val the new value
	 */
	public void setFullLoyaltyBonus(final float val) {
		fullLoyaltyBonus = val;
	}
	/**
	 * Sets the full value of the character's MaxAddlLanguages score.
	 * @param val the new value
	 */
	public void setFullMaxAddlLanguages(final float val) {
		fullMaxAddlLanguages = val;
	}
	/**
	 * Sets the full value of the character's MaxHenchmen score.
	 * @param val the new value
	 */
	public void setFullMaxHenchmen(final float val) {
		fullMaxHenchmen = val;
	}
	/**
	 * Sets the full value of the character's MaxHP score.
	 * @param val the new value
	 */
	public void setFullMaxHP(final float val) {
		fullMaxHP = val;
	}
	/**
	 * Sets the full value of the character's MentalSavingThrowBonus score.
	 * @param val the new value
	 */
	public void setFullMentalSavingThrowBonus(final float val) {
		fullMentalSavingThrowBonus = val;
	}
	/**
	 * Sets the full value of the character's MissileBonus score.
	 * @param val the new value
	 */
	public void setFullMissileBonus(final float val) {
		fullMissileBonus = val;
	}
	/**
	 * Sets the full value of the character's ReactionBonus score.
	 * @param val the new value
	 */
	public void setFullReactionBonus(final float val) {
		fullReactionBonus = val;
	}
	/**
	 * Sets the full value of the character's Strength score.
	 * @param val the new value
	 */
	public void setFullStrength(final float val) {
		fullStrength = val;
	}
	/**
	 * Sets the full value of the character's SurpriseBonus score.
	 * @param val the new value
	 */
	public void setFullSurpriseBonus(final float val) {
		fullSurpriseBonus = val;
	}
	/**
	 * Sets the full value of the character's SurviveRaiseDead score.
	 * @param val the new value
	 */
	public void setFullSurviveRaiseDead(final float val) {
		fullSurviveRaiseDead = val;
	}
	/**
	 * Sets the full value of the character's SurviveRez score.
	 * @param val the new value
	 */
	public void setFullSurviveRez(final float val) {
		fullSurviveRez = val;
	}
	/**
	 * Sets the full value of the character's SurviveSystemShock score.
	 * @param val the new value
	 */
	public void setFullSurviveSystemShock(final float val) {
		fullSurviveSystemShock = val;
	}
	/**
	 * Sets the full value of the character's Wisdom score.
	 * @param val the new value
	 */
	public void setFullWisdom(final float val) {
		fullWisdom = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base ACAdjustment
	 * score.
	 * @param val the new value
	 */
	public void setModACAdjustment(final float val) {
		modACAdjustment = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base BendBars
	 * score.
	 * @param val the new value
	 */
	public void setModBendBars(final float val) {
		modBendBars = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base Charisma
	 * score.
	 * @param val the new value
	 */
	public void setModCharisma(final float val) {
		modCharisma = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base Constitution
	 * score.
	 * @param val the new value
	 */
	public void setModConstitution(final float val) {
		modConstitution = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base Dexterity
	 * score.
	 * @param val the new value
	 */
	public void setModDexterity(final float val) {
		modDexterity = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base DmgBonus
	 * score.
	 * @param val the new value
	 */
	public void setModDmgBonus(final float val) {
		modDmgBonus = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base
	 * EncumbranceAdjustment score.
	 * @param val the new value
	 */
	public void setModEncumbranceAdjustment(final float val) {
		modEncumbranceAdjustment = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base ForceDoors
	 * score.
	 * @param val the new value
	 */
	public void setModForceDoors(final float val) {
		modForceDoors = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base HitBonus
	 * score.
	 * @param val the new value
	 */
	public void setModHitBonus(final float val) {
		modHitBonus = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base HP score.
	 * @param val the new value
	 */
	public void setModHP(final float val) {
		modHP = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base HPBonus score.
	 * @param val the new value
	 */
	public void setModHPBonus(final float val) {
		modHPBonus = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base Intelligence
	 * score.
	 * @param val the new value
	 */
	public void setModIntelligence(final float val) {
		modIntelligence = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base LoyaltyBonus
	 * score.
	 * @param val the new value
	 */
	public void setModLoyaltyBonus(final float val) {
		modLoyaltyBonus = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base
	 * MaxAddlLanguages score.
	 * @param val the new value
	 */
	public void setModMaxAddlLanguages(final float val) {
		modMaxAddlLanguages = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base MaxHenchmen
	 * score.
	 * @param val the new value
	 */
	public void setModMaxHenchmen(final float val) {
		modMaxHenchmen = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base MaxHP score.
	 * @param val the new value
	 */
	public void setModMaxHP(final float val) {
		modMaxHP = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base
	 * MentalSavingThrowBonus score.
	 * @param val the new value
	 */
	public void setModMentalSavingThrowBonus(final float val) {
		modMentalSavingThrowBonus = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base MissileBonus
	 * score.
	 * @param val the new value
	 */
	public void setModMissileBonus(final float val) {
		modMissileBonus = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base ReactionBonus
	 * score.
	 * @param val the new value
	 */
	public void setModReactionBonus(final float val) {
		modReactionBonus = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base Strength
	 * score.
	 * @param val the new value
	 */
	public void setModStrength(final float val) {
		modStrength = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base SurpriseBonus
	 * score.
	 * @param val the new value
	 */
	public void setModSurpriseBonus(final float val) {
		modSurpriseBonus = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base
	 * SurviveRaiseDead score.
	 * @param val the new value
	 */
	public void setModSurviveRaiseDead(final float val) {
		modSurviveRaiseDead = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base SurviveRez
	 * score.
	 * @param val the new value
	 */
	public void setModSurviveRez(final float val) {
		modSurviveRez = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base
	 * SurviveSystemShock score.
	 * @param val the new value
	 */
	public void setModSurviveSystemShock(final float val) {
		modSurviveSystemShock = val;
	}
	/**
	 * Sets the value of the modifier applied to character's base Wisdom score.
	 * @param val the new value
	 */
	public void setModWisdom(final float val) {
		modWisdom = val;
	}
	/**
	 * {@inheritDoc}
	 */
	@Override
	public void clearModAbilityScores() {
		// TODO Auto-generated method stub
		
	}
}
